package cn.wolfcode.service;


import cn.wolfcode.common.domain.UserInfo;
import cn.wolfcode.domain.OrderInfo;
import cn.wolfcode.domain.SeckillProductVo;
import cn.wolfcode.mq.OrderTimeOutMessage;
import org.aspectj.weaver.ast.Or;

/**
 * Created by wolfcode
 * @author BAI
 */
public interface IOrderInfoService {

    OrderInfo selectByUserIdAndSeckillId(Long phone, Long seckillId, Integer time);

    String doSeckill(UserInfo userInfo, SeckillProductVo vo);

    OrderInfo selectByOrderNo(String orderNo, Long phone);

    OrderInfo selectByOrderNoRedis(String orderNo, Long phone);


    OrderInfo findByOrderNo(String orderNo);

    void rollbackOrderSeckill(Long seckillId, Integer time, Long userPhone);

    void checkPayTimeOut(OrderTimeOutMessage message);

    void paySuccess(String outTradeNo, String tradeNo, String totalAmount);

    void doRefund(String outTradeNo, Long phone);

    void commitRefund(String outTradeNo);

    void integralPay(String orderNo, Long phone);
}
